package com.example.demo.code.aop.annotation;

import java.lang.annotation.*;

/**
 * aop自定义注解
 * Target作用于方法和类上
 * Retention运行时
 * Documented生成文档
 * Inherited
 * 1、类继承关系中@Inherited的作用
 * 类继承关系中，子类会继承父类使用的注解中被@Inherited修饰的注解
 *
 * 2、接口继承关系中@Inherited的作用
 * 接口继承关系中，子接口不会继承父接口中的任何注解，不管父接口中使用的注解有没有被@Inherited修饰
 *
 * 3、类实现接口关系中@Inherited的作用
 * 类实现接口时不会继承任何接口中定义的注解
 *
 * @author huangchenyu
 * @date 2021-04-12
 */
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
public @interface Action {
    String description() default "no description";
}